#ifndef DATABASE_H
#define DATABASE_H
#include "qsql.h"
#include "qsqldatabase.h"
#include "qsqlquery.h"
#include "string.h"
#include "qstring.h"
#include "vector"
#include "map"
#include <QMap>
class DataBase
{
public:
    DataBase();
    bool connectWithDataBase(QString login, QString password);
    bool setSettings(QString, QString);
    void disconnectWithDataBase();
    QSqlQuery* getResultFor(QString queStr);
    QSqlDatabase* getConnect();
    QSqlQuery* addClient(QMap<QString, QString> clientInfo);
    QSqlQuery* addOrder(QMap<QString, QString> orderInfo);
    QString addGoods(QMap<QString, QString> goodsInfo);
    QString addDecloration(QMap<QString, QString> declInfo);
    QSqlQuery* getClientInfo();
    QSqlQuery* getOrderInfo();
    QSqlQuery* getDeclInfo(QString orderId);
    QSqlQuery* getContactInfo(QString prefix);
    QSqlQuery* getDepartInfo(QString prefix);
    QSqlQuery* getBorderInfo(QString prefix);
    QSqlQuery* getTransInfo(QString prefix);
    QSqlQuery* getPactsInfo(QString prefix);

    QSqlQuery* getClientInfo(QString currPrefix);
    QString getCurrentPrefix(QString currentOrder);
    QSqlQuery* getOrderInfo(QString currId);
    QSqlQuery* getCurrentGoodsInfo(QString currId);
    QSqlQuery* getCurrentDeclInfo(QString decl);
    QString updateClient(QMap<QString,QString> clientInfo, QString currPrefix);
    QString updateGoods(QMap<QString,QString> goodsInfo);
    QString updateDecl(QMap<QString,QString> declInfo);
    QString updateGoods(QString cDecl, QString cGoods);
    QSqlQuery* updateContact(QMap<QString,QString> contactInfo);

    QSqlQuery* updateDepart(QMap<QString,QString> contactInfo);
    QSqlQuery* updateBorder(QMap<QString,QString> contactInfo);
    QSqlQuery* updateTrans(QMap<QString,QString> contactInfo);
    QSqlQuery* updatePact(QMap<QString,QString> contactInfo);

    QString addContact(QMap<QString,QString> contactInfo);

    QString addDepart(QMap<QString,QString> contactInfo);
    QString addPact(QMap<QString,QString> contactInfo);
    QString addBorder(QMap<QString,QString> contactInfo);
    QString addTrans(QMap<QString,QString> contactInfo);

    void dropGoods(QString currId);
    bool isOpen();

private:

    QSqlQuery* query;
    QSqlDatabase db;
    QString host;
    QString name;
    QString pass;
    QString login;
    bool status;

};

#endif // DATABASE_H
